package model;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.ForeignKey;

@Entity
public class Peca implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Long id;

	@Column(length=50)	
	private String descricao;

	@Column(length=200, name="desc_detalhada")
	private String descDetalhada;

	@Column
	private Integer estoque;

	@Column(name="minimo_estoque")
	private Integer minimoEstoque;

	@Column(name="valor_compra", precision=15, scale = 2)
	private Double valorCompra;

	@Column(name="valor_venda", precision=15, scale = 2)
	private Double valorVenda;

	@Column
	private Boolean ativo;

	@Column(name="data_cadastro")
	@Temporal(TemporalType.DATE)
	private Calendar dataCadastro;

	@ManyToOne(fetch=FetchType.EAGER)
	@ForeignKey(name="fk_modelo_veiculo")
	@JoinColumn(name="modelo_veiculo")
	private ModeloVeiculo modeloVeiculo;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDescDetalhada() {
		return descDetalhada;
	}

	public void setDescDetalhada(String descDetalhada) {
		this.descDetalhada = descDetalhada;
	}

	public Integer getEstoque() {
		return estoque;
	}

	public void setEstoque(Integer estoque) {
		this.estoque = estoque;
	}

	public Integer getMinimoEstoque() {
		return minimoEstoque;
	}

	public void setMinimoEstoque(Integer minimoEstoque) {
		this.minimoEstoque = minimoEstoque;
	}

	public Double getValorCompra() {
		return valorCompra;
	}

	public void setValorCompra(Double valorCompra) {
		this.valorCompra = valorCompra;
	}

	public Double getValorVenda() {
		return valorVenda;
	}

	public void setValorVenda(Double valorVenda) {
		this.valorVenda = valorVenda;
	}

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public Calendar getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Calendar dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public ModeloVeiculo getModeloVeiculo() {
		return modeloVeiculo;
	}

	public void setModeloVeiculo(ModeloVeiculo modeloVeiculo) {
		this.modeloVeiculo = modeloVeiculo;
	}
	
	@Override
	public String toString() {
		return this.descricao;
	}
}